Presenting a travel option

ABSTRACT

Presentation of travel options may involve presenting a travel option based on an event stored in a calendar of a user. A suggestion machine may access calendar data of the user and travel data for a travel option (e.g., a flight from San Francisco to New York). Based on the accessed calendar data and travel data, the suggestion machine may present one or more travel options to the user.

RELATED APPLICATION

This application is a continuation of, and claims the priority benefitof, U.S. patent application Ser. No. 14/071,100 (Attorney Docket No.3283.015US3), filed Nov. 4, 2013, and also claims the priority benefitof, U.S. patent application Ser. No. 13/210,562 (Attorney Docket No.3283.015US1), filed Aug. 16, 2011, which are incorporated herein byreference in their entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to the processingof data. Specifically, the present disclosure addresses systems andmethods to facilitate presentation of a travel option.

BACKGROUND

An online service may allow a user of the online service to viewmultiple options for travel plans and make a selection from among themultiple options. For example, an airline may operate a webpage thatprovides an online reservation service from which a user may search foravailable flights (e.g., from San Francisco to New York) on a particularday and then select one of the available flights for reserving a seatthereon. As another example, a hotel may operate a webpage that providesan online reservation service from which the user may search foravailable hotel properties and room types (e.g., in New York) for aparticular period of time (e.g., September 5 through September 9) andthen select one of the available room types at an available hotelproperty for reserving. As a further example, a restaurant may offer awebpage that provides an online reservation service from which the usermay search for available table reservations (e.g., at a popularrestaurant) within a particular range of times (e.g., 5:30 PM to 7:30PM) on a particular date and then select one of the available tablereservations for reserving.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a network diagram illustrating a network environment suitablefor presentation of a travel option, according to some exampleembodiments.

FIG. 2 is a block diagram illustrating components of a suggestionmachine, according to some example embodiments.

FIG. 3 is a block diagram illustrating calendar data accessed by thesuggestion machine, according to some example embodiments.

FIG. 4 is a block diagram illustrating travel data accessed by thesuggestion machine, according to some example embodiments.

FIG. 5 is a block diagram illustrating transportation option dataaccessed by the suggestion machine, according to some exampleembodiments.

FIG. 6 is a block diagram illustrating accommodation option dataaccessed by the suggestion machine, according to some exampleembodiments.

FIG. 7-9 are flowcharts illustrating operations in a method ofpresenting a travel option, according to some example embodiments.

FIG. 10 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

DETAILED DESCRIPTION

Example methods and systems are directed to presentation of one or moretravel options. Examples merely typify possible variations. Unlessexplicitly stated otherwise, components and functions are optional andmay be combined or subdivided, and operations may vary in sequence or becombined or subdivided. In the following description, for purposes ofexplanation, numerous specific details are set forth to provide athorough understanding of example embodiments. It will be evident to oneskilled in the art, however, that the present subject matter may bepracticed without these specific details.

Presentation of a travel option may involve suggesting a travel optionbased on events stored in a calendar of a user. For example, a user inSan Francisco may be scheduled for a business trip to New York, and theuser's calendar may show a dinner reservation in San Francisco onSaturday, September 3 and a business meeting in New York on Monday,September 5. A suggestion machine is configured to access calendar dataof the user and travel data for several available travel options (e.g.,flights from San Francisco to New York). Based on the accessed calendardata and travel data, the suggestion machine may be configured todetermine that one or more particular travel options (e.g., a flight onSunday, September 4) are compatible with the dinner reservation and thebusiness meeting on the user's calendar. The suggestion machine isfurther configured to present travel options to the user (e.g., assuggestions for making a selection of a flight, or as a reminder).

As used herein, a “travel option” is an option (e.g., choice, offering,alternative, menu item, or special deal) of potential interest to atraveller (e.g., as a user of an online service) in making or executinga travel plan (e.g., an itinerary). A travel option may be a“transportation option” pertinent to a transportation service or avehicle. Examples of transportation options include travel by airplane,train, bus, trolley, ferry, ship, taxicab, rental car, car sharingservice, or any suitable combination thereof. Transportation options mayinclude transportation services (e.g., passenger service) provided bycommercial carriers (e.g., airlines, car rental companies, or cruiseoperators), public transportation (e.g., city buses or regional trains),private operators (e.g., limousine services, charter airplanes, orcharter helicopters), or any combination thereof. In some exampleembodiments, the transportation option specifies that the traveler walk,jog, hike, or ride a bicycle to a particular destination. A traveloption may be an “accommodation option” pertinent to an accommodation(e.g., hospitality) service. Examples of accommodation options includestays in a hotel, motel, resort, hostel, bed-and-breakfast inn, boardinghouse, vacation rental, home sharing service, campground, or anysuitable combination thereof. Further examples of accommodation optionsinclude reservations at a restaurant, conference facility, healthfacility (e.g., spa, salon, or massage studio), athletic facility (e.g.,gym, pool, or fitness center), or entertainment venue (e.g., theater,sports stadium, amusement park, or museum). In some situations, a traveloption may be both a transportation option and an accommodation option(e.g., a compartment in a passenger train, a cabin on a cruise ship, ora bed on an overnight airline flight). A further example of a traveloption is trip insurance (e.g., an insurance policy for a set oftransportation options, accommodation options, or both).

FIG. 1 is a network diagram illustrating a network environment 100suitable for presentation of a travel option, according to some exampleembodiments. The network environment 100 includes a suggestion machine110, a calendar server 120, a travel server 130, and user devices 140and 150, all communicatively coupled to each other via a network 190. Insome example embodiments, the suggestion machine 110 and the calendarserver 120 may form all or part of a calendar service system thatprovides calendar-related services to one or more users (e.g., eventscheduling or project management). In certain example embodiments, thesuggestion machine 110 and the travel server 130 may form all or part ofa travel service system that provides travel-related services to one ormore users (e.g., merchandising of travel options or itinerarymanagement). In various example embodiments, the suggestion machine 110,the calendar server 120, and the travel server 130 form all or part of acombined system. The suggestion machine 110 may be implemented in acomputer system, as described below with respect to FIG. 10.

The calendar server 120 functions as a data repository that storescalendar data of one or more users. In some example embodiments, thecalendar server 120 is operated by a third-party calendar service (e.g.,Google or Yahoo). The travel server 130 functions as a data repositorythat stores travel data describing one or more travel options. Incertain example embodiments, the travel server 130 is operated by athird-party travel service (e.g., a travel agency, an airline, or ahotel management company).

Also shown in FIG. 1 are users 142 and 152. One or both of the users 142and 152 may be a human user (e.g., a human being), a machine user (e.g.,a software program configured to interact with the user device 140), orany suitable combination thereof (e.g., a human assisted by a machine ora machine supervised by human). The user 142 is not part of the networkenvironment 100, but is associated with the user device 140 and may be auser of the user device 140. For example, the user device 140 may be adeskside computer, a tablet computer, or a smart phone belonging to theuser 142. Similarly, the user 152 is not part of the network environment100, but is associated with the user device 150. As an example, the userdevice 150 may be a tablet computer belonging to the user 152.

Any of the machines, databases, or devices shown in FIG. 1 may beimplemented in a general-purpose computer modified (e.g., configured orprogrammed) by software to be a special-purpose computer to perform thefunctions described herein for that machine. For example, a computersystem able to implement any one or more of the methodologies describedherein is discussed below with respect to FIG. 10. As used herein, a“database” is a data storage resource and may store data structured as atext file, a table, a spreadsheet, a relational database, a triplestore, a key-value store, or any suitable combination thereof. Moreover,any two or more of the machines illustrated in FIG. 1 may be combinedinto a single machine, and the functions described herein for any singlemachine may be subdivided among multiple machines.

The network 190 may be any network that enables communication betweenmachines (e.g., suggestion machine 110 and the user device 140).Accordingly, the network 190 may be a wired network, a wireless network(e.g., a mobile network), or any suitable combination thereof. Thenetwork 190 may include one or more portions that constitute a privatenetwork, a public network (e.g., the Internet), or any suitablecombination thereof.

FIG. 2 is a block diagram illustrating components of the suggestionmachine 110, according to some example embodiments. The suggestionmachine 110 includes an access module 210, an analysis module 220, asuggestion module 230, a buffer module 240, a cost module 250, and asort module 260, all configured to communicate with each other (e.g.,via a bus, shared memory, or a switch). Any one or more of the modulesdescribed herein may be implemented using hardware (e.g., a processor ofa machine) or a combination of hardware and software. Moreover, any twoor more of these modules may be combined into a single module, and thefunctions described herein for a single module may be subdivided amongmultiple modules.

The access module 210 is configured to access calendar data of a user(e.g., a traveler, a potential traveler, a consumer of travel options,or a potential consumer of travel options). The access module 210 mayaccess the calendar data from the calendar server 120. In some exampleembodiments, the suggestion machine 110 stores the calendar data, andthe access module 210 accesses the calendar data from the suggestionmachine 110. The calendar data includes information describing one ormore events in the calendar of the user (e.g., scheduled for the user).Accordingly, the calendar data indicates a period of time (e.g., firstperiod of time) during which the user is scheduled to participate in(e.g., attend) an event. For example, the calendar data may indicatethat the user 142 is scheduled to attend a business meeting in New Yorkon Monday, September 5, from 10 AM to 12 PM Eastern Time.

The access module 210 is further configured to access travel data. Theaccess module 210 may access the travel data from the travel server 130.In some example embodiments, the suggestion machine 110 stores thetravel data, and the access module 210 accesses the travel data from thesuggestion machine 110. The travel data includes information describingone or more travel options available for selection by the user (e.g.,transportation options or accommodation options). Accordingly, thetravel data indicates a period of time (e.g., a second period of time)during which a travel option (e.g., among multiple travel options) isscheduled to occur. For example, the travel data may indicate that atransportation option (e.g., an airline flight) is scheduled to leaveSan Francisco at 10:30 PM Pacific Time and arrive in New York City at 7AM Eastern Time the following day.

According to some example embodiments, the access module 210 is alsoconfigured to access additional data. The additional data may includeweather data (e.g., information on storms or delays due to weather),traffic data (e.g., information on delays or closures due to accidents,road construction, or heavy traffic), passenger screening data (e.g.,information on average wait time, delays, or inconveniences due tosecurity screening of passengers), user preferences (e.g.,user-submitted information or information observed from a user'sbehavior in one or more membership organizations, subscriptions, orwebsites), or any suitable combination thereof. Further examples ofadditional data include government notices (e.g., warnings of risks forbad weather, natural disasters, war, riots, crime, or terrorism issuedby a government agency or official). The user preferences may includeinformation (e.g., submitted by the user or observed from the user'sbehavior) on desired or undesired carriers, hotels, services, amenities,costs, numbers of stops, locations of stops, preparation time formeetings, or layover durations. Examples of the additional data may takethe form of historical data (e.g., heavy traffic on Thanksgiving weekendfor the past 10 years), real-time data (e.g., an accident report),forecast data (e.g., weather forecasts predicting thunderstorms thatwould delay flights, or economic forecasts predicting a high chance ofrevolution in a country), or any suitable combination thereof. Theaccess module 210 may access the additional data from the suggestionmachine 110, the calendar server 120, the travel server 130, one or moreadditional servers connected to the network 190 (e.g., operated by oneor more third parties), or any suitable combination thereof. Forexample, the additional data may indicate that the period of time (e.g.,the second period of time) scheduled for the travel option is likely tobe lengthened by 60 minutes due to a combination of delays stemming frombad weather, bad traffic, and large crowds going through airportsecurity in San Francisco (e.g., as predicted from historical data,real-time data, forecast data, or any suitable combination thereof). Asanother example, the additional data may indicate that the user 142prefers nonstop flights costing under $500 and that layovers be longerthan 30 minutes but no longer than 90 minutes.

The analysis module 220 is configured to analyze the calendar data andthe travel data (e.g., accessed by the access module 210) and determinea set of one or more travel options that are compatible with the one ormore events described in the calendar data. The analysis module 220 maymake the determination that a travel option is compatible with an eventof the user 142 based on the period of time (e.g., the first period oftime) for the event, on the period of time (e.g., the second period oftime) for the travel option, or on both. For example, the analysismodule 220 may determine that the airline flight scheduled to leave SanFrancisco at 10:30 PM Pacific Time and arrive in New York City at 7 AMEastern Time the following day is compatible with the business meetingin New York on Monday, September 5, from 10 AM to 12 PM Eastern Time.

The suggestion module 230 is configured to present one or more traveloptions determined (e.g., by the analysis module 220) as beingcompatible with one or more events of the user 142. For example, thesuggestion module 230 may present the airline flight scheduled to leaveSan Francisco at 10:30 PM Pacific Time and arrive in New York City at 7AM Eastern Time the following day as being compatible with the businessmeeting in New York on Monday, September 5, from 10 AM to 12 PM EasternTime. According to various example embodiments, the suggestion module230 presents the travel option to the user 142 (e.g., via the userdevice 140), to a friend of the user 142 (e.g., to the user 152 via theuser device 150), to an assistant of the user 142 (e.g., to the user 152by the user device 150), to another participant in the event of the user142 (e.g., to the user 152 by the user device 150), or any suitablecombination thereof. The suggestion module 230 may present the traveloption by displaying or causing the display of a webpage (e.g., of atravel option search service), a notification (e.g., a pop up window), amessage (e.g., an email message, instant message, or a text message), orany suitable combination thereof. In some example embodiments, thesuggestion module 230 presents the travel option in a communicationdirected at the user 142, in a communication addressed to the userdevice 140, or both. Such a communication may present the travel optionamong multiple travel options (e.g., for consideration by the user 142).

The buffer module 240 is configured to determine a threshold period oftime for comparison to a period of time (e.g., a third period of time)by which the period of time for the event (e.g., the first period oftime) is separated from the period of time for a travel option (e.g.,the second period of time). For example, the threshold period of timemay be a minimum period of time (e.g., a minimum buffer time) or amaximum period of time (e.g., a maximum buffer time). Accordingly, thethreshold period of time may represent a minimum or maximum buffer timebetween the event and the travel option. As used herein, a “buffer time”is a period of time between the period of time for an event and theperiod of time for a travel option, between the periods of time for twotravel options, between the periods of time for two events, or between aperiod of time between two portions of a single travel option (e.g., alayover between two legs of a journey). For example, an airline flightthat arrives in New York City at 7 AM Eastern Time the following day mayarrive three hours prior to a business meeting scheduled in New YorkCity on that day at 10 AM Eastern Time. Compared to a minimum buffertime of two hours, such a three-hour buffer time is compatible with thisminimum buffer time. The buffer module 240 is also configured todetermine that the period of time (e.g., the third period of time) bywhich the period of time for the event (e.g., the first period of time)is separated from the period of time for the travel option (e.g., thesecond period of time) transgresses the threshold period of time (e.g.,the minimum or maximum period of time). For example, the buffer module240 may determine that the buffer time exceeds a maximum buffer time orfalls below a minimum buffer time. The analysis module 220 may determinethat the travel option is compatible with the event based on thisdetermination by the buffer module 240. According to various exampleembodiments, the buffer module 240 may determine the threshold period oftime based on a location of the event (e.g., as indicated by thecalendar data accessed by the access module 210), on the additional data(e.g., accessed by the access module 210), or any suitable combinationthereof.

The cost module 250 is configured to determine that a travel option isless expensive (e.g., monetarily) than another travel option (e.g., afurther travel option) among multiple travel options (e.g., as indicatedby the travel data accessed by the access module 210). In some exampleembodiments, the cost module 250 is configured to determine that thetravel option has a fewer number of stops than another travel option(e.g., the further travel option) among the multiple travel options. Inthis manner, the cost module 250 may rank any number of travel optionsby monetary expense (e.g., price), number of stops, or any suitablecombination thereof (e.g., an “agony” score calculated from price,number of stops, total duration of a transportation option, etc.).

The sort module 260 is configured to generate a presentation of one ormore travel options for presentation by the suggestion module 230. Thesort module 260 may generate the presentation based on one or moredeterminations performed by the cost module 250 (e.g., one or moreranked travel options). According to various example embodiments, thesort module 260 generates the presentation based on the calendar data(e.g., a list of attendees for an event), the travel data (e.g., a listof amenities at an accommodation near the event), or any suitablecombination thereof. For example, if the calendar data indicates thatthe user 142 is attending an event with his two children, the sortmodule 260 may elevate or otherwise visually highlight a stay atkid-friendly hotel with free video games and a highly rated swimmingpool. As another example, if the calendar data indicates that the user142 is attending an event with wealthy business clients, the sort module260 may elevate or otherwise visually highlight a stay at a high-endluxury hotel with sophisticated conference facilities. As a furtherexample, if the calendar data indicates that the user 142 is attendingan event with his wife near their wedding anniversary date, the sortmodule 260 may elevate or otherwise visually highlight a stay at aromantic bed-and-breakfast inn near the event.

FIG. 3 is a block diagram illustrating calendar data 300 (e.g., asaccessed by the access module 210), according to some exampleembodiments. The calendar data 300 includes information describing oneor more events. As shown, event data 310 describes an event (e.g., aphone call, a business meeting, a multi-day conference, or a week-longvacation). Similarly, event data 330, 340, and 350 describe additionalevents (e.g., each event having its own location). The calendar data 300may be limited to events of a single user (e.g., user 142). In someexample embodiments, the calendar data 300 includes events for multipleusers (e.g., user 142 and user 152). According to various exampleembodiments, one or more of the following data structures may beomitted.

The event data 310 includes a name 311 of an event (e.g., a title), acreator 312 of the event (e.g., the user 142 or an assistant thereof), asubject 313 of the event (e.g., a description or note), and a location314 of the event (e.g., room number, floor number, venue name, address,city, state, country, cross streets, or global positioning system (GPS)coordinates). The event data 310 also includes a period of time 315 forthe event. The period of time 315 includes a start time 316 (e.g., 10AM), an end time 317 (e.g., 12 PM), a duration 318 (e.g., two hours),and a time zone 319 (e.g., Eastern Time). In some example embodiments,the period of time 250 includes multiple time zones (e.g., time zone319). According to various example embodiments, the event data 310includes a nonphysical flag 320 (e.g., indicating that the event is avirtual or online event), an accepted flag 321 (e.g., indicating thatthe event has been accepted into the calendar of the user 142), atentative flag 322 (e.g., indicating that the event is tentativelyscheduled for the user 142), and a busy/available flag 323 (e.g.,indicating whether the user 142 is busy or available for additionalevents during the period of time 315). Moreover, in some exampleembodiments, the event data 310 includes information on one or moreadditional attendees. As shown, the event data 310 includes an “other”attendee 324 of the event (e.g., a name of another attendee) and astatus 325 of the other attendee (e.g., whether the other attendee 324is scheduled to attend the event). In various example embodiments, theother attendee 324 is a friend, family member, coworker, colleague, or aclient of the user 142 (e.g., user 152). In certain example embodiments,multiple “other” attendees are specified in the event data 310. Each ofthe event data 330, 340, and 350 may include information similar to thatdescribed for the event data 310.

FIG. 4 is a block diagram illustrating travel data 400, according tosome example embodiments. The travel data 400 includes informationdescribing one or more travel options. According to various exampleembodiments, the travel data 400 may include transportation data 410,accommodation data 420, or both. According to various exampleembodiments, one or more of the following data structures may beomitted.

The transportation data 410 includes information describing one or moretransportation options. As shown, transportation option data 412describes a transportation option (e.g., an airline flight). Forexample, the transportation option data 412 may include flightinformation referencing an airline flight, schedule information for atransportation service that corresponds to a particular vehicle (e.g.,bus, trolley, ferry, taxicab, car rental, or ship), or any suitablecombination thereof. Similarly, transportation option data 414, 416, and418 describe additional transportation options. The transportation data410 may be limited to transportation options available from a singletransportation service (e.g., a single airline). In some exampleembodiments, the transportation data 410 includes transportation optionsavailable from multiple transportation services (e.g., multipleairlines, operators, car rental companies, and bus operators).

The accommodation data 420 includes information describing one or moreaccommodation options. As shown, accommodation option data 422 describesan accommodation option (e.g., a hotel stay). Similarly, accommodationoption data 424, 426, and 428 describe additional accommodation options.The accommodation data 420 may be limited to accommodation optionsavailable from a single accommodation provider (e.g., a single hotel).In some example embodiments, the accommodation data 420 includesaccommodation options available from multiple accommodation providers(e.g., multiple hotels, hotel chains, motels, bed-and-breakfast inns,and campgrounds).

FIG. 5 is a block diagram illustrating the transportation option data412, according to some example embodiments. The transportation optiondata 412 is discussed as being representative of the transportationoption data 414, 416, and 418. According to various example embodiments,one or more of the following data structures may be omitted.

The transportation option data 412 includes an identifier 510 of atransportation option (e.g., a flight number for an airline flight) anda carrier 520 for the transportation option (e.g., an airline name). Thecarrier 520 may be a name of a transportation service or providerthereof (e.g., Delta Air Lines® or Carnival Cruises®). In some exampleembodiments, the carrier 520 may be “walk” or some other indication thatselection of this transportation option would schedule the user 142 totransport himself. The transportation option data 412 includes adeparture location 530 (e.g., a departure city, airport, train station,bus stop, address, venue, or accommodation). Also included in thetransportation option data 412 is an arrival location 540 (e.g., anarrival city, airport, train station, bus stop, address, venue, oraccommodation). The transportation option data 412 includes a period oftime 550 for the transportation option. The period of time 550 includesa start time 551 (e.g., 10:30 PM), a time zone 552 for the start time551 (e.g., Pacific Time), and end time 553 (e.g., 7 AM), a time zone 554for the end time 553 (e.g., Eastern Time), a duration 555 (e.g., fivehours and thirty minutes), and layover information 556 and 557. Thelayover information 556 may describe a scheduled stop within thetransportation option. In particular, a layover time may be described inthe layover information 556 (e.g., a thirty minute layover in Atlanta at6 AM Eastern Time). The layover information 557 may describe anotherscheduled stop and its corresponding layover time. Moreover, in someexample embodiments, the transportation option data 412 includes a price560 of the transportation option (e.g., $317) and a service level 570 ofthe transportation option (e.g., an airline class of service).

FIG. 6 is a block diagram illustrating accommodation option data 422,according to some example embodiments. The accommodation option data 422is discussed as being representative of the accommodation option data424, 426, and 428. According to various example embodiments, one or moreof the following data structures may be omitted.

The accommodation option data 422 includes a provider 610 of theaccommodation option (e.g., a name of a particular hotel), a location620 of the accommodation option (e.g., address, city, state, country,cross streets, or GPS coordinates), an accommodation type 630 of theaccommodation option (e.g., style of room or permissibility of smoking),and a service level 640 of the accommodation option (e.g., whether anyspecial deals, perks, benefits, or loyalty rewards apply). Theaccommodation option data 422 includes a period of time 650 for theaccommodation option. The period of time 650 includes a start time 656(e.g., a check-in date or a check-in time on a date of arrival), an endtime 657 (e.g., a check-out date or a check-out time on a date ofdeparture), a duration 658 (e.g., five days, four nights), and a timezone 659 of the accommodation option (e.g., Eastern Time). Moreover, insome example embodiments, the accommodation option data 422 may includea price 660 (e.g., a rate per night) and a cost 670 (e.g., a total costfor the full stay).

FIG. 7-9 are flowcharts illustrating operations in a method 700 ofpresenting a travel option (e.g., as described by transportation optiondata 412 or accommodation option data 422), according to some exampleembodiments. Operations in the method 700 may be performed by thesuggestion machine 110, using modules described above with respect toFIG. 2. As shown in FIG. 7, the method 700 includes operations 710, 720,730, and 740.

In operation 710, the access module 210 accesses the calendar data 300(e.g., from the calendar server 120). The calendar data 300 may bespecific to the user 142. Moreover, the calendar data 300 may indicatethe period of time 315 (e.g., a first period of time) during which theuser 142 is scheduled to participate in an event (e.g., a businessmeeting). In some example embodiments, operation 710 is performed byinvoking an application programming interface (API) (e.g., a public API)provided by a third-party calendar service (e.g., Google®) to access thecalendar data 300. For example, the API may be invoked in response tothe user 142 providing log in credentials (e.g., username and password)to identify or authenticate himself to the suggestion machine 110, tothe calendar server 120, to the travel server 130, or any suitablecombination thereof. In certain example embodiments, operation 710 isperformed by receiving the calendar data 300 from the calendar server120. As an example, the calendar data 300 may be received from thecalendar server 120 in response to a request submitted by the user 142to the calendar server 120. As another example, the calendar data 300may be received from the calendar server 120 as part of a data feed(e.g., a periodic or repeating download) arranged or authorized by theuser 142. According to various example embodiments, operation 710 isperformed in response to a query submitted by the user 142 (e.g., viathe user device 140). For example, the user 142 may query the name of acity (e.g., San Francisco or New York City), and the access module 210may access the calendar data 300 in response to the submission of thequery (e.g., as detected by the suggestion machine 110, the calendarserver 120, the travel server 130, or any suitable combination thereof).

In operation 720, the access module 210 accesses travel data 400 (e.g.,from the travel server 130). The travel data 400 may indicate multipletravel options available for selection by the user 142. Moreover, thetravel data 400 indicates a period of time (e.g., period of time 550 orperiod of time 650) during which a travel option is scheduled to occur.In some example embodiments, the travel data 400 may indicate the periodof time 550 (e.g., a second period of time) during which thetransportation option that corresponds to the transportation option data412 is scheduled to occur. In certain example embodiments, the traveldata 400 may indicate the period of time 650 (e.g., the second period oftime) during which the accommodation option that corresponds to theaccommodation option data 422 is scheduled to occur. According tovarious example embodiments, operation 720 is performed in response to aquery submitted by the user 142 (e.g., via the user device 140). Forexample, the user 142 may query the name of a city (e.g., San Franciscoor New York City), and the access module 210 may access the travel data400 in response to the submission of the query (e.g., as detected by thesuggestion machine 110, the calendar server 120, the travel server 130,or any suitable combination thereof).

In operation 730, the analysis module 220 determines that the traveloption is compatible with the event in which the user 142 is scheduledto participate. This determination may be based on the period of time315 (e.g., as indicated by the calendar data 300), on the period of timeduring which the travel option is scheduled to occur (e.g., period oftime 550 or period of time 650), or both.

In some example embodiments, the travel option is a transportationoption (e.g., among multiple transportation options), and operation 730includes determining that no portion of the period of time during whichthe transportation option is scheduled to occur coincides with anyportion of the period of time 315 during which the user 142 is thescheduled to participate in the event. In other words, the determinationthat the travel option is compatible with the event may be based onthere being no overlap between the period of time 315 and the period oftime 550.

In certain example embodiments, the analysis module 220 determines thatthe travel option is compatible with the event based on the location 314of the event. Moreover, the location 314 may be indicated as anonphysical location (e.g., by the nonphysical flag 320). For example,the event may be a scheduled phone call, teleconference, or online chatsession, and the location 314 of the event may be indicated as being“virtual” or “online.” Since the user 142 may be able to participate inan event at a nonphysical location while using a particular traveloption, the analysis module 220 may determine that the particular traveloption is compatible with such an event, despite the period of time 315for the event coinciding, at least in part, with the period of timecorresponding to the particular travel option (e.g., period of time 550or period of time 650). This determination may be based on the locationof the event being nonphysical (e.g., as indicated by the nonphysicalflag 320). For example, the user 142 may participate in a scheduledphone call while traveling on a train.

In various example embodiments, the analysis module 220 determines thatthe travel option is compatible with the event based on a layover time(e.g., a third period of time) encompassing the period of time 315 foran event (e.g., a first period of time). For example, if an event (e.g.,a phone call) is a nonphysical event (e.g., as indicated by thenonphysical flag 320) scheduled to occur during the layover time (e.g.,between airline flights), the user 142 may be able to participate in theevent while using the travel option. Accordingly, the analysis module220 may determine that the travel option is compatible with the eventbased on the layover time, the nonphysical flag 320, or both.

In operation 740, the suggestion module 230 presents the travel optionthat is determined to be compatible with the event. For example, thesuggestion module 230 may present the travel option as a suggestion, asa reminder, or both. Moreover, the suggestion module 230 may present thetravel option to the user 142 (e.g., via the user device 140). Accordingto some example embodiments, the suggestion module 230 presents thetravel option to the user 152 (e.g., via the user device 150), where theuser 152 may be related to the user 142 (e.g., an assistant, friend,family member, colleague, client, or a fellow event attendee). Thetravel option may be presented by displaying or causing the display of awebpage (e.g., of a travel option search service), a notification (e.g.,a pop up window), a message (e.g., an email message, instant message, ora text message). Further details of the method 700 are discussed belowwith respect to FIG. 8-9.

As shown in FIG. 8, various example embodiments of the method 700 mayinclude one or more of operations 802, 804, 808, 810, 820, 830, 840,850, 860, 870, 880, and 890. One or both of operations 802 and 804 maybe performed as part (e.g., a precursor task, a subroutine, or aportion) of operation 720. Similarly, one or more of operations 820-890may be performed as part of operation 730.

In operation 802, the access module 210 accesses the transportation data410, which is described above with respect to FIG. 4. For example, theaccess module 210 may access the transportation data 410 from the travelserver 130. In operation 804, the access module 210 accesses theaccommodation data 420, which is also described above with respect toFIG. 4. As an example, the access module 210 may access theaccommodation data 420 from the travel server 130.

In operation 808, the access module 210 accesses additional data (e.g.,as described above with respect to FIG. 2). According to various exampleembodiments, the additional data may include weather data (e.g.,information on storms or delays due to weather), traffic data (e.g.,information on accidents or delays due to traffic), passenger screeningdata (e.g., information on average wait time, delays, or problems due tosecurity screening of passengers), user preferences (e.g., informationsubmitted by, or observed from the behavior of, the user 142),government notices (e.g., warnings), or any suitable combinationthereof. In example embodiments that include operation 808, the analysismodule 220 may perform operation 730 based on at least some of theadditional data.

In operation 810, the buffer module 240 determines a threshold period oftime (e.g., as described above with respect to FIG. 2). The thresholdperiod of time may be determined based on the data accessed by theaccess module 210 (e.g., the additional data discussed above withrespect to operation 808). For example, the buffer module 240 maydetermine the threshold period of time based on the location 314 of anevent (e.g., as stored in the calendar data 300). As another example,the threshold period of time may be determined based on the additionaldata accessed in operation 808.

In operation 820, the analysis module 220 determines (e.g., as part ofoperation 730) that a buffer time transgresses a threshold period oftime (e.g., as determined in operation 810). In some exampleembodiments, the analysis module 220 determines that the period of time315 for an event (e.g., a first period of time) is separated from theperiod of time 550 for a transportation option (e.g., a second period oftime) by a buffer time. In certain example embodiments, the analysismodule 220 determines that the period of time 315 for the event isseparated from the period of time 650 for an accommodation option (e.g.,the second period of time) by the buffer time. Having determined thebuffer time, the analysis module 220 may determine that the buffer timetransgresses the threshold period of time determined in operation 810.This may have the effect of determining that a travel option iscompatible with an event on the basis of the buffer time being greaterthan a minimum buffer time, less than a maximum buffer time, or anysuitable combination thereof.

In operation 860, the analysis module 220 determines that the period oftime 315 for an event (e.g., the first period of time) falls within theperiod of time 650 for an accommodation option (e.g., the second periodof time), according to some example embodiments. This may have theeffect of determining that an event (e.g., a physical event) isscheduled to start and ended during an accommodation option. Forexample, a vacation to Hawaii may be indicated as a physical event(e.g., by absence of the nonphysical flag 320), and the analysis module220 may determine that an accommodation option (e.g., a hotel stay) iscompatible with the vacation, based on the period of time for thevacation (e.g., period of time 315) falling within a period of time forthe accommodation option (e.g., period of time 650). In certain exampleembodiments, the analysis module 220 determines that the period of time315 falls within the period of time 550 for a transportation option(e.g., the second period of time). This may have the effect ofdetermining that an event (e.g., a nonphysical event) is scheduled tostart and end during a transportation option. As an example, a scheduledteleconference may be indicated as a nonphysical event (e.g., by thenonphysical flag 320), and the analysis module 220 may determine that atransportation option (e.g., a train ride) is compatible with thescheduled teleconference, based on the period of time for theteleconference (e.g., period of time 315) falling within a period oftime for the transportation option (e.g., period of time 550).

According to various example embodiments, the calendar data 300 includeslocations (e.g., location 314) of multiple events (e.g., event data 310,330, 340, and 350). For example, the user 142 may be scheduled to attendmultiple business meetings during a single business trip. The calendardata 300 may indicate a sequence of multiple events (e.g., including theevent corresponding to the event data 310). Moreover, the sequence ofmultiple events may include an initial (e.g., first) event at an initial(e.g., first) location, as well as a final (e.g., last) event at a final(e.g., last) location. By performing one or more of operations 830, 840,850, 870, 880, and 890, the analysis module 220 may base thedetermination performed in operation 730 on one or more locations ofthese events, a location corresponding to a particular travel option, orany suitable combination thereof. In some example embodiments, theanalysis module 220 may base the determination performed in operation730 on one or more distances (e.g., calculated, received, accessed, orlooked up from a table) from the location corresponding to a particulartravel option.

In operation 830, the analysis module 220 calculates a centroid ofmultiple event locations (e.g., location 314) and determines that thecentroid is within a threshold distance of a location for atransportation option (e.g., an airline flight). For example, theanalysis module 220 may determine that the centroid is within athreshold distance of the departure location 530, the arrival location540, or both. This may have the effect of determining that thetransportation option is conveniently located with respect to themultiple event locations. In some example embodiments, a particularevent location is used for more than one event among multiple events,and the calculation of the centroid may accord greater weight to thisparticular event location.

In operation 870, the analysis module 220 calculates a centroid ofmultiple event locations (e.g., location 314) and determines that acentroid is within a threshold distance of a location for anaccommodation option (e.g., a hotel stay). For example, the analysismodule 220 may determine that the centroid is within a thresholddistance of the location 620 (e.g., of a hotel). This may have theeffect of determining that the accommodation option is convenientlylocated with respect to the multiple event locations.

In operation 840, the analysis module 220 determines that the arrivallocation 540 of a transportation option is within a threshold distanceof an initial location (e.g., location 314) among multiple eventlocations. This may have the effect of determining that thetransportation option provides the user 142 with convenient access tothe initial event after using the transportation option.

In operation 850, the analysis module 220 determines that the departurelocation 530 of a transportation option is within a threshold distanceof a final location (e.g., location 314) among multiple event locations.This may have the effect of determining that the transportation optionprovides the user 142 with convenient access to the transportationoption after the final event in a sequence of multiple events.

In operation 880, the analysis module 220 determines that an initiallocation (e.g., location 314) among multiple event locations is within athreshold distance of the location 620 of an accommodation option. Thismay have the effect of determining that the accommodation optionprovides the user 142 with convenient access to the initial event fromthe accommodation option.

In operation 890, the analysis module 220 determines that a finallocation (e.g., location 314) among multiple event locations is within athreshold distance of the location 620 of an accommodation option. Thismay have the effect of determining that the accommodation optionprovides the user 142 with convenient access to the accommodation optionfrom the final event.

As shown in FIG. 9, various example embodiments of the method 700 mayinclude one or more of operations 910, 920, 930, 940, 950, 960, 970,972, 974, 980, and 982. One or more of operations 940-982 may beperformed as part (e.g., a precursor task, a subroutine, or a portion)of operation 740.

In operation 910, the cost module 250 determines that a particulartravel option (e.g., corresponding to transportation option data 412 oraccommodation option data 422) is less expensive than another compatibletravel option (e.g., corresponding to transportation option data 414 oraccommodation option data 424). This may have the effect of enabling thecost module 250 to rank travel options by monetary expense (e.g., priceor cost).

In operation 920, the cost module 250 determines that a particulartravel option (e.g., corresponding to transportation option data 412)has fewer stops than another compatible travel option (e.g.,corresponding to transportation option data 414). This may have theeffect of enabling the cost module to rank travel options by number ofstops.

In operation 930, the cost module 250 determines a rank of a traveloption (e.g., corresponding to transportation option data 412 oraccommodation option data 422). The cost module 250 may determine ranksfor multiple travel options. The rank of a particular travel option maybe determined based on the location 314 of an event, a locationcorresponding to the particular travel option (e.g., departure location530, arrival location 540, or location 620 of an accommodation option),or any suitable combination thereof. Moreover, the rank of theparticular travel option may be determined based on monetary expense(e.g., as described above with respect to operation 910). Furthermore,the rank of the particular travel option may be determined based on anumber of stops (e.g., as described above with respect to operation920). This may have the effect of enabling the sort module 260 togenerate the presentation of one or more travel options based on one ormore ranks determined in operation 930, which in turn may enable thesuggestion module 230 to present the presentation generated by the sortmodule 260.

In operation 940, the suggestion module 230 presents a travel option(e.g., as determined in operation 730 to be compatible with the event)based on a rank of the travel option. For example, the travel option maybe presented in a list of compatible travel options, where the list issorted by rank.

In operation 950, the suggestion module 230 presents the travel optionby presenting a suggestion that the user 142 perform a search for one ormore similar travel options among multiple travel options. For example,the travel option determined in operation 730 may be presented with amessage stating, “Click here to search for flights like this for yourupcoming business trip!”

In operation 960, the suggestion module 230 presents the travel optionby presenting a suggestion that the user 142 select (e.g., buy, reserve,or book) the travel option. For example, the travel option determined inoperation 730 may be presented with a message stating, “This hotel stayfits your business trip. Click here to reserve it now!”

In operation 970, the suggestion module 230 presents the travel optionby presenting a reminder that the event is scheduled to occur during theperiod of time 315 for the event. According to various exampleembodiments, one or more of operations 972 and 974 may be performed aspart (e.g., a precursor task, a subroutine, or a portion) of operation970. In operation 972, the reminder is communicated to the user device140 (e.g., for the user 142). For example, the travel option determinedin operation 730 may be presented with a message stating, “Your businesstrip to New York is coming up on September 5. Better get a flight soon!”Communications to the user device 140 may be addressed to the userdevice 140, to the user 142, or to both. In operation 974, the reminderis communicated to the user device 150 (e.g., for the user 152, who maybe an assistant of the user 142, a friend of the user 142, a familymember of the user 142, a colleague of the user 142, a client of theuser 142, or another attendee of the event). As an example, the traveloption determined in operation 730 may be presented with a messagestating, “John's business trip to New York is coming up on September 5,but he hasn't booked a flight yet.” Communications to the user device150 may be addressed to the user device 150, to the user 152, or toboth. According to some example embodiments, the travel option may bepresented with a map (e.g., a geographical map of a city) that depictsone or more locations of events, travel options, or any suitablecombination thereof (e.g., as pins or markers within the map).

In operation 980, the suggestion module 230 presents a calendar (e.g.,showing one or more months) with a representation of the period of time315 for an event (e.g., a representation of a first period of time) anda representation of the period of time corresponding to the traveloption determined in operation 730 (e.g., a representation of a secondperiod of time). For example, the calendar may include representationsof the period of time 315 and of the period of time 550 for atransportation option. As another example, the calendar may includerepresentations of the period of time 315 and of the period of time 650for an accommodation option. This may have the effect of indicating(e.g., to the user 142) that there is no conflict between the event andthe travel option determined in operation 730. In some exampleembodiments, the calendar indicates one or more periods of time asblocks (e.g., rectangular shapes) within a chart or grid, and aparticular block may indicate that a corresponding period of time isavailable or unavailable for scheduling a travel option. Moreover, thecalendar may indicate a previously selected travel option (e.g., assuggested by the method 700) as a previously scheduled event within thecalendar (e.g., a tentatively scheduled event).

According to various example embodiments, operation 982 may be performedas part (e.g., a precursor task, a subroutine, or a portion) ofoperation 980. In operation 982, the suggestion module 230 presents thecalendar with a representation of a further period of time (e.g., arepresentation of a third period of time) that is adjacent to the periodof time 315 for the event (e.g., the first period of time). For example,the calendar may include representations of one or more dates before orafter the period of time 315 for the event. In some example embodiments,the representations of the one or more dates include indicators ofadditional travel options determined to be compatible with the event.This may have the effect of presenting (e.g., to the user 142 or to theuser 152) travel options that extend beyond the period of time 315 of anevent. According to certain example embodiments, this may enable theuser 142 to make travel plans that accommodate an additional eventunrepresented in the calendar data 300. In some example embodiments,this may enable the presentation of one or more additional traveloptions that are ranked more favorably than the travel option determinedin operation 730 (e.g., lower cost, fewer stops, more loyalty points, orother special deal).

According to various example embodiments, one or more of themethodologies described herein may facilitate communication ofinformation about one or more travel options. In particular, one or moreof the methodologies described herein may constitute all or part of abusiness method (e.g., a business method implemented using a machine)that presents one or more users with available travel options determinedto be compatible with one or more events. Moreover, presentation of suchtravel options may be conveniently integrated with calendar information,which may facilitate the making of travel plans.

When these effects are considered in aggregate, one or more of themethodologies described herein may obviate a need for certain efforts orresources that otherwise would be involved in matching users (e.g., aspotential consumers of travel options) with travel options that arelikely to be of interest to those users. Efforts expended by a user inidentifying a travel option may be reduced by one or more of themethodologies described herein. Computing resources used by one or moremachines, databases, or devices (e.g., within the network environment100) may similarly be reduced. Examples of such computing resourcesinclude processor cycles, network traffic, memory usage, data storagecapacity, power consumption, and cooling capacity.

FIG. 10 illustrates components of a machine 1000, according to someexample embodiments, that is able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 10 shows a diagrammatic representation of the machine1000 in the example form of a computer system and within whichinstructions 1024 (e.g., software) for causing the machine 1000 toperform any one or more of the methodologies discussed herein may beexecuted. In alternative embodiments, the machine 1000 operates as astandalone device or may be connected (e.g., networked) to othermachines. In a networked deployment, the machine 1000 may operate in thecapacity of a server machine or a client machine in a server-clientnetwork environment, or as a peer machine in a peer-to-peer (ordistributed) network environment. The machine 1000 may be a servercomputer, a client computer, a personal computer (PC), a tabletcomputer, a laptop computer, a netbook, a set-top box (STB), a personaldigital assistant (PDA), a cellular telephone, a smartphone, a webappliance, a network router, a network switch, a network bridge, or anymachine capable of executing the instructions 1024 (sequentially orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include a collection of machines that individually orjointly execute the instructions 1024 to perform any one or more of themethodologies discussed herein.

The machine 1000 includes a processor 1002 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 1004, and a static memory 1006, which areconfigured to communicate with each other via a bus 1008. The machine1000 may further include a graphics display 1010 (e.g., a plasma displaypanel (PDP), a liquid crystal display (LCD), a projector, or a cathoderay tube (CRT)). The machine 1000 may also include an alphanumeric inputdevice 1012 (e.g., a keyboard), a cursor control device 1014 (e.g., amouse, a touchpad, a trackball, a joystick, a motion sensor, or otherpointing instrument), a storage unit 1016, a signal generation device1018 (e.g., a speaker), and a network interface device 1020.

The storage unit 1016 includes a machine-readable medium 1022 on whichis stored the instructions 1024 (e.g., software) embodying any one ormore of the methodologies or functions described herein. Theinstructions 1024 may also reside, completely or at least partially,within the main memory 1004, within the processor 1002 (e.g., within theprocessor's cache memory), or both, during execution thereof by themachine 1000. Accordingly, the main memory 1004 and the processor 1002may be considered as machine-readable media. The instructions 1024 maybe transmitted or received over a network 1026 (e.g., network 190) viathe network interface device 1020.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1022 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storeinstructions (e.g., instructions 1024). The term “machine-readablemedium” shall also be taken to include any medium that is capable ofstoring instructions (e.g., software) for execution by the machine, suchthat the instructions, when executed by one or more processors of themachine (e.g., processor 1002), cause the machine to perform any one ormore of the methodologies described herein. The term “machine-readablemedium” shall accordingly be taken to include, but not be limited to, adata repository in the form of a solid-state memory, an optical medium,a magnetic medium, or any suitable combination thereof.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where thehardware modules comprise a general-purpose processor configured bysoftware to become a special-purpose processor, the general-purposeprocessor may be configured as respectively different hardware modulesat different times. Software may accordingly configure a processor, forexample, to constitute a particular hardware module at one instance oftime and to constitute a different hardware module at a differentinstance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. Moreover, theone or more processors may also operate to support performance of therelevant operations in a “cloud computing” environment or as a “softwareas a service” (SaaS). For example, at least some of the operations maybe performed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Some portions of this specification are presented in terms of algorithmsor symbolic representations of operations on data stored as bits orbinary digital signals within a machine memory (e.g., a computermemory). These algorithms or symbolic representations are examples oftechniques used by those of ordinary skill in the data processing artsto convey the substance of their work to others skilled in the art. Asused herein, an “algorithm” is a self-consistent sequence of operationsor similar processing leading to a desired result. In this context,algorithms and operations involve physical manipulation of physicalquantities. Typically, but not necessarily, such quantities may take theform of electrical, magnetic, or optical signals capable of beingstored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

1. A method comprising: determining, by one or more processors of amachine, a first time span during which a user is scheduled to attend anevent, the determining of the first time span including electronicretrieval of at least two of an event start time of the event, an eventduration of the event, or an event stop time of the event, theelectronic retrieval being from a calendar server communicativelycoupled to the machine; determining, by one or more processors of themachine, a second time span during which a travel option is scheduled tooccur, the determining of the second time span including electronicaccess of an option identifier of the travel option and at least two ofa travel start time of the travel option, a travel duration of thetravel option, or a travel duration of the travel option, the electronicaccess being to a travel server communicatively coupled to the machine;selecting, by one or more processors of the machine, the travel optionfor presentation in a message to be generated and presented to the user,the selecting being based on a lack of overlap between the determinedfirst time span during which the user is scheduled to attend the eventand the determined second time span during which the travel option isscheduled to occur; generating, by one or more processors of themachine, the message by incorporating the option identifier into themessage; and controlling, by one or more processors of the machine, adevice of the user by causing the device to present the generatedmessage that includes the option identifier of the travel optionselected based on the lack of overlap between the determined first timespan and the determined second time span.
 2. The method of claim 1,wherein: the electronic access to the travel server includes electronicaccess to departure location data that indicates a departure location ofthe travel option; and the controlling of the device includes causingthe device to depict the departure location data within a geographicalmap included in the message that includes the option identifier of thetravel option.
 3. The method of claim 2, wherein: the electronicretrieval from the calendar server includes electronic retrieval ofevent location data that indicates an event location of the event andelectronic retrieval of calendar data that indicates the event is afinal event in a series of multiple events; and the selecting of thetravel option is based on the departure location data, the eventlocation data, and the calendar data that indicates the event is thefinal event in the series of multiple events.
 4. The method of claim 3,wherein: the selecting of the travel option includes: determining athreshold time span based on the event location data and the departurelocation data; and determining that the first time span and the secondtime span are separated by a third time span that transgresses thethreshold time span.
 5. The method of claim 4, wherein: the determiningof the threshold time span is further based on at least one of weatherdata, traffic data, passenger screening data, or a preference of theuser.
 6. The method of claim 1, wherein: the electronic access to thetravel server includes electronic access to arrival location data thatindicates an arrival location of the travel option; and the controllingof the device includes causing the device to depict the arrival locationdata within a geographical map included in the message that includes theoption identifier of the travel option.
 7. The method of claim 6,wherein: the electronic retrieval from the calendar server includeselectronic retrieval of event location data that indicates an eventlocation of the event and electronic retrieval of calendar data thatindicates the event is an initial event in a series of multiple events;and the selecting of the travel option is based on the arrival locationdata, the event location data, and the calendar data that indicates theevent is the initial event in the series of multiple events.
 8. Themethod of claim 7, wherein: the selecting of the travel option includes:determining a threshold time span based on the event location data andthe arrival location data; and determining that the first time span andthe second time span are separated by a third time span thattransgresses the threshold time span.
 9. The method of claim 8, wherein:the determining of the threshold time span is further based on at leastone of weather data, traffic data, passenger screening data, or apreference of the user.
 10. The method of claim 1, wherein: theelectronic access to the travel server includes electronic access toaccommodation location data that indicates an accommodation location ofthe travel option; and the controlling of the device includes causingthe device to depict the accommodation location data within ageographical map included in the message that includes the optionidentifier of the travel option.
 11. The method of claim 10, wherein:the electronic retrieval from the calendar server includes electronicretrieval of calendar data that indicates multiple event locations ofmultiple events that include the event that the user is scheduled toattend; and the selecting of the travel option is based on theaccommodation location data indicating that the accommodation locationof the travel option is within a threshold distance of a centroid of themultiple event locations of the multiple events that include the event.12. The method of claim 11, wherein: the selecting of the travel optionincludes: determining a threshold time span based on the accommodationlocation data and the centroid of the multiple applications; anddetermining that the first time span and the second time span areseparated by a third time span that transgresses the threshold timespan.
 13. The method of claim 12, wherein: the determining of thethreshold time span is further based on at least one of weather data,traffic data, passenger screening data, or a preference of the user. 14.The method of claim 1, wherein: the controlling of the device of theuser includes causing the device to present a reminder that the event isscheduled to occur during the determined first time span.
 15. The methodof claim 1, wherein: the electronic retrieval from the calendar serverincludes electronic retrieval of an attendee identifier of an attendeewho is scheduled to attend the event and is distinct from the user; andthe method further comprises: controlling a device of the attendee bycausing the device of the attendee to present a reminder that the eventis scheduled to occur during the determined first time span.
 16. Anon-transitory machine-readable storage medium comprising instructionsthat, when executed by one or more processors of a machine, cause themachine to perform operations comprising: determining a first time spanduring which a user is scheduled to attend an event, the determining ofthe first time span including electronic retrieval of at least two of anevent start time of the event, an event duration of the event, or anevent stop time of the event, the electronic retrieval being from acalendar server communicatively coupled to the machine; determining asecond time span during which a travel option is scheduled to occur, thedetermining of the second time span including electronic access of anoption identifier of the travel option and at least two of a travelstart time of the travel option, a travel duration of the travel option,or a travel duration of the travel option, the electronic access beingto a travel server communicatively coupled to the machine; selecting thetravel option for presentation in a message to be generated andpresented to the user, the selecting being based on a lack of overlapbetween the determined first time span during which the user isscheduled to attend the event and the determined second time span duringwhich the travel option is scheduled to occur; generating the message byincorporating the option identifier into the message; and controlling adevice of the user by causing the device to present the generatedmessage that includes the option identifier of the travel optionselected based on the lack of overlap between the determined first timespan and the determined second time span.
 17. The non-transitorymachine-readable storage medium of claim 16, wherein: the electronicretrieval from the calendar server includes electronic retrieval of anattendee identifier of an attendee scheduled to attend the event butdistinct from the user; the controlling of the device of the usercontrols a first device by causing the first device to present thegenerated message; and the method further comprises: controlling asecond device of the attendee by causing the second device to present areminder that the event is scheduled to occur during the determinedfirst time span.
 18. A system comprising: processors; and a memorystoring instructions that, when executed by at least one processor amongthe processors, cause the system to perform operations comprising:determining a first time span during which a user is scheduled to attendan event, the determining of the first time span including electronicretrieval of at least two of an event start time of the event, an eventduration of the event, or an event stop time of the event, theelectronic retrieval being from a calendar server communicativelycoupled to the machine; determining a second time span during which atravel option is scheduled to occur, the determining of the second timespan including electronic access of an option identifier of the traveloption and at least two of a travel start time of the travel option, atravel duration of the travel option, or a travel duration of the traveloption, the electronic access being to a travel server communicativelycoupled to the machine; selecting the travel option for presentation ina message to be generated and presented to the user, the selecting beingbased on a lack of overlap between the determined first time span duringwhich the user is scheduled to attend the event and the determinedsecond time span during which the travel option is scheduled to occur;generating the message by incorporating the option identifier into themessage; and controlling a device of the user by causing the device topresent the generated message that includes the option identifier of thetravel option selected based on the lack of overlap between thedetermined first time span and the determined second time span.
 19. Thesystem of claim 18, wherein: the electronic access to the travel serverincludes electronic access to location data that indicates a location ofthe travel option; and the controlling of the device includes causingthe device to depict the location data within a geographical mapincluded in the message that includes the option identifier of thetravel option.
 20. The system of claim 19, wherein: the electronicretrieval from the calendar server includes electronic retrieval ofcalendar data that indicates multiple locations of multiple events thatinclude the event that the user is scheduled to attend; and theselecting of the travel option includes: determining a threshold timespan based on the location data and the calendar data that indicates themultiple locations of the multiple events that include the event; anddetermining that the first time span and the second time span areseparated by a third time span that transgresses the threshold timespan.